package com.situ.gym.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.situ.gym.mapper.CourseMapper;
import com.situ.gym.pojo.Course;
import com.situ.gym.pojo.vo.CourseExcelVO;
import org.springframework.beans.BeanUtils;
//导出时调用CourseExcelListener，一行一行地去插入
public class CourseExcelListener extends AnalysisEventListener<CourseExcelVO> {
    private CourseMapper courseMapper;

    //因为要new对象，所以不用注解依赖注入通过spring容器new对象，而是通过构造方法
    public CourseExcelListener(CourseMapper courseMapper) {
        this.courseMapper = courseMapper;
    }

    //一行一行读取excle中的内容，从第二行开始读取，因为第一行是表头）
    /*每读取一行数据，就会调用此方法
     * @param courseExcelVO    当前行数据封装成的对象
     * @param analysisContext  EasyExcel 提供的上下文对象，包含当前分析状态等信息*/
    @Override
    public void invoke(CourseExcelVO courseExcelVO, AnalysisContext analysisContext) {
        System.out.println("CourseExcelListener.invoke");
        Course course = new Course();
        BeanUtils.copyProperties(courseExcelVO, course);
        //插入的数据避免和原有id冲突，将 ID 设为，让数据库自动生成
        course.setId(null);
        //调用 CourseMapper 的 insert 方法，将课程数据插入数据库
        courseMapper.insert(course);
    }

    //读取之后执行
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("CourseExcelListener.doAfterAllAnalysed");
    }
}
